﻿using AexoManager.BussinesLogic;
using AexoManager.Datos;
using AexoManager.Models;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace AexoManager.Controllers
{
    public class ProcesosController : Controller
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(ProcesosController));

        #region Accion
        public ActionResult Index()
        {

            var procesos = new BSProceso().ObtenerProcesos();

            ViewBag.Resultado = procesos;

            return View("ProcesosList");
        }

        public ActionResult Nuevo()
        {
            return View("ProcesosDetalle");
        }

        public ActionResult Modificar(ProcesosViewModel modelo)
        {
            try
            {
                var unProceso = new BSProceso().Get(new Proceso { IdProceso = modelo.IdProceso });
                modelo.Codigo = unProceso.Codigo;
                modelo.Descripcion = unProceso.Descripcion;

            }
            catch (Exception ex)
            {

                log.Error("Ocurrio un error en la presentacion de Guardar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }
            return View("ProcesosDetalle", modelo);
        }

        public ActionResult Guardar(ProcesosViewModel modelo)
        {
            try
            {
                BSProceso bsProceso = new BSProceso();

                if (modelo.IdProceso != 0)
                {
                    var unProceso = bsProceso.Get(new Proceso { IdProceso = modelo.IdProceso });
                    unProceso.Codigo = modelo.Codigo;
                    unProceso.Descripcion = modelo.Descripcion;

                    bsProceso.Update(unProceso);
                }
                else
                {
                    Proceso unProceso = new Proceso();
                    unProceso.Codigo = modelo.Codigo;
                    unProceso.Descripcion = modelo.Descripcion;

                    bsProceso.Save(unProceso);
                }

                BSProceso.Confirmar();
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error en la presentacion de Guardar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }

            return RedirectToAction("Index");
        }

        [HttpPost]
        public ActionResult Eliminar(ProcesosViewModel modelo)
        {
            try
            {
                Proceso dtoParte = new Proceso { IdProceso = modelo.IdProceso };
                //dtoParte.IdProceso = ;
                new BSProceso().Delete(dtoParte);
                BSProceso.Confirmar();
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error en la presentacion de Eliminar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }
            return RedirectToAction("Index");
        }
        #endregion
    }
}
